
#ifndef __GUI_CONTROLIMPL_HPP__
#define __GUI_CONTROLIMPL_HPP__

#include <RevEng/RevEng.hpp>
#include "Base.hpp"

namespace Gui
{    
	class ControlImpl : public virtual RevEng::Object
	{
		/*Eventos*/
	private:
		RevEng::ObjRef<RevEng::Event> m_pClick;
		RevEng::ObjRef<RevEng::Event> m_pSize;

	public:
		ControlImpl();
		virtual ~ControlImpl() {}

		RevEng::Event* GetClickEvent() const;
		RevEng::Event* GetSizeEvent() const;

		/*Implementaciones de las propiedades*/
		virtual void			PropertySet_Text	(const std::string&)	= 0;
		virtual void			PropertySet_Position(const Vector2<int>&)	= 0;
		virtual void			PropertySet_Size	(const Size2<int>&)	    = 0;
		virtual void			PropertySet_Visible	(const bool&)			= 0;

		virtual std::string		PropertyGet_Text	()	= 0;
		virtual Vector2<int>	PropertyGet_Position()	= 0;
		virtual Size2<int>		PropertyGet_Size	()	= 0;
		virtual bool			PropertyGet_Visible	()	= 0;

	};
}

#endif	//__GUI_CONTROLIMPL_HPP__
